Apache HTTP Client: Proxy Settings কনফিগারেশন
অ্যাপাচি HTTP ক্লায়েন্টে Proxy Settings কনফিগারেশন করা গুরুত্বপূর্ণ, বিশেষত যখন আপনার অ্যাপ্লিকেশনটি একটি প্রক্সি সার্ভারের মাধ্যমে ইন্টারনেট বা নেটওয়ার্ক সংযোগ করতে চায়। প্রক্সি সার্ভারগুলি সাধারণত নিরাপত্তা, লোড ব্যালান্সিং, বা ইন্টারনেট অ্যাক্সেস কন্ট্রোলের জন্য ব্যবহৃত হয়।
আপনি Apache HTTP Client-এ সহজে প্রক্সি সার্ভারের কনফিগারেশন সেট করতে পারেন। এখানে HttpClient
কনফিগারেশনের সময় proxy settings যোগ করা হয়। এটি RequestConfig
এবং HttpClientBuilder
ব্যবহার করে করা হয়।
ProxyHost
: প্রক্সি সার্ভারের হোস্টনেম।ProxyPort
: প্রক্সি সার্ভারের পোর্ট নম্বর।ProxyUsername
এবং ProxyPassword
যোগ করতে হবে।RequestConfig
ব্যবহার করে প্রক্সি সেটিংস কনফিগার করা হয়, এবং তারপর সেটিংসটি HttpClientBuilder এর মাধ্যমে HttpClient এর সাথে যুক্ত করা হয়।import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import java.net.InetSocketAddress;
import java.net.Proxy;
public class ApacheHttpClientProxyConfigExample {
public static void main(String[] args) {
// Proxy Configuration
String proxyHost = "proxy.example.com";
int proxyPort = 8080;
String proxyUsername = "proxyUser";
String proxyPassword = "proxyPass";
// RequestConfig তৈরি করা
RequestConfig requestConfig = RequestConfig.custom()
.setProxy(new HttpHost(proxyHost, proxyPort)) // Proxy Host এবং Port সেট করা
.build();
// HttpClientBuilder তৈরি করা, RequestConfig এর সাথে Proxy settings যোগ করা
try (CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultRequestConfig(requestConfig)
.build()) {
// POST Request এর URL
String url = "https://example.com/api";
// HttpPost অবজেক্ট তৈরি
HttpPost postRequest = new HttpPost(url);
// JSON বা অন্য ধরনের ডেটা পাঠানোর জন্য কন্টেন্ট সেট করা
String json = "{ \"name\": \"John\", \"age\": 30 }";
StringEntity entity = new StringEntity(json);
// Request Content-Type সেট করা
postRequest.setEntity(entity);
postRequest.setHeader("Accept", "application/json");
postRequest.setHeader("Content-Type", "application/json");
// POST Request পাঠানো এবং Response গ্রহণ করা
HttpResponse response = httpClient.execute(postRequest);
// Response থেকে স্ট্যাটাস কোড এবং কন্টেন্ট নেওয়া
int statusCode = response.getStatusLine().getStatusCode();
System.out.println("Response Code: " + statusCode);
HttpEntity responseEntity = response.getEntity();
if (responseEntity != null) {
String responseBody = EntityUtils.toString(responseEntity);
System.out.println("Response Body: " + responseBody);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
setProxy(new HttpHost(proxyHost, proxyPort))
: এটি RequestConfig
এর মাধ্যমে প্রক্সি সার্ভার কনফিগার করে।proxyHost
এবং proxyPort
প্রক্সি সার্ভারের হোস্টনেম এবং পোর্ট নম্বর কনফিগার করে।RequestConfig
কনফিগারেশন সেট করে, যেখানে proxy এর ঠিকানা এবং পোর্টের তথ্য রাখা হয়।Proxy Authentication (Optional):
HttpClientBuilder
এ setProxyCredentials()
ব্যবহার করতে পারেন।উদাহরণ:
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(
new AuthScope(proxyHost, proxyPort),
new UsernamePasswordCredentials(proxyUsername, proxyPassword)
);
PoolingHttpClientConnectionManager
ব্যবহার করে connection pooling করা যেতে পারে, যাতে একাধিক connection ব্যবহৃত হয়, এবং এটি API কলগুলির কার্যকারিতা বৃদ্ধি করে।Apache HTTP Client-এ প্রক্সি কনফিগারেশন সেট করা খুবই সহজ। আপনি RequestConfig
এবং HttpClientBuilder
ব্যবহার করে প্রক্সি সার্ভারের হোস্টনেম, পোর্ট, এবং অথেনটিকেশন কনফিগার করতে পারেন। এই কনফিগারেশনটি HTTP request পাঠানোর সময় প্রক্সি সার্ভারের মাধ্যমে request পাঠানোর জন্য কার্যকর।
common.read_more